1. Field of Disclosure
The present invention relates to bus arbiters and more specifically to bus arbiters avoidance of deadlocks and starvation on buses that support retrying of transactions.
2. Related Art
A bus refers to a communication path shared by multiple components of the same system to transfer data units. Queues are often employed to buffer the various data units before being sent to the respective target components. Such buffering is required typically due to the various bottlenecks in delivering the data units to respective target components.
Queues with different priorities may be employed, usually to ensure that more critical data units are forwarded sooner than those that do not have that degree of criticality/importance. Usually, the queuing approach (e.g., First-in-first out, last-in-first-out, etc.) of that particular queue determines the data unit that should be forwarded next from that queue.
Arbiters are used to select one of the queues from which a data unit is to be next transmitted. In general, arbiters need to ensure that lower priority queues are not starved and no deadlocks occur. As is well known, starvation implies that the lower priority queues are not provided a turn to transmit within a reasonable duration of time. On the other hand deadlocks refer to a situation in which each of a set of components is waiting for respective events from another component in a circular fashion, such that none of the events happen.
Various aspects of the present invention help achieve such objectives as described below in further detail.
In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.